/*
 * Copyright (C) 2012 Realtek Semiconductor Corp.
 * All Rights Reserved.
 *
 * This program is the proprietary software of Realtek Semiconductor
 * Corporation and/or its licensors, and only be used, duplicated,
 * modified or distributed under the authorized license from Realtek.
 *
 * ANY USE OF THE SOFTWARE OTHER THAN AS AUTHORIZED UNDER
 * THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
 *
 */

#ifndef __MIB_CUC_ONUOPTICALTRANSCEIVERSINFO_TABLE_H__
#define __MIB_CUC_ONUOPTICALTRANSCEIVERSINFO_TABLE_H__

/* Table onu capability attribute len, only string attrubutes have length definition */
#define MIB_TABLE_ONUOPTICALTRANSINFO_VENDER_NAME_LEN       (16)
#define MIB_TABLE_ONUOPTICALTRANSINFO_VENDER_PN_LEN         (16)
#define MIB_TABLE_ONUOPTICALTRANSINFO_VENDER_SN_LEN         (16)

/* Table onu capability attribute index */
#define MIB_TABLE_CUC_ONUOPTICALTRANSINFO_ATTR_NUM (10)
#define MIB_TABLE_CUC_ONUOPTICALTRANSINFO_ENTITYID_INDEX ((MIB_ATTR_INDEX)1)
#define MIB_TABLE_CUC_ONUOPTICALTRANSINFO_MODULE_TYPE_INDEX ((MIB_ATTR_INDEX)2)
#define MIB_TABLE_CUC_ONUOPTICALTRANSINFO_MODULE_SUBTYPE_INDEX ((MIB_ATTR_INDEX)3)
#define MIB_TABLE_CUC_ONUOPTICALTRANSINFO_USED_TYPE_INDEX ((MIB_ATTR_INDEX)4)
#define MIB_TABLE_CUC_ONUOPTICALTRANSINFO_ENC_TYPE_INDEX ((MIB_ATTR_INDEX)5)
#define MIB_TABLE_CUC_ONUOPTICALTRANSINFO_TX_WAVELENGTH_INDEX ((MIB_ATTR_INDEX)6)
#define MIB_TABLE_CUC_ONUOPTICALTRANSINFO_RX_WAVELENGTH_INDEX ((MIB_ATTR_INDEX)7)
#define MIB_TABLE_CUC_ONUOPTICALTRANSINFO_RX_VENDOR_NAME_INDEX ((MIB_ATTR_INDEX)8)
#define MIB_TABLE_CUC_ONUOPTICALTRANSINFO_RX_VENDOR_PN_INDEX ((MIB_ATTR_INDEX)9)
#define MIB_TABLE_CUC_ONUOPTICALTRANSINFO_RX_VENDOR_SN_INDEX ((MIB_ATTR_INDEX)10)

typedef enum {
    CUC_ONUOPTICALTRANSINFO_MODULE_TYPE_GPON,
    CUC_ONUOPTICALTRANSINFO_MODULE_TYPE_XGPON,
    CUC_ONUOPTICALTRANSINFO_MODULE_TYPE_XGSPON,
} cuc_onuOpticalTransInfo_attr_module_type_t;

typedef enum {
    CUC_ONUOPTICALTRANSINFO_MODULE_SUBTYPE_CLASS_B_PULS_C_PLUS,
    CUC_ONUOPTICALTRANSINFO_MODULE_SUBTYPE_CLASS_N1_N2A_E1_E2A,
    CUC_ONUOPTICALTRANSINFO_MODULE_SUBTYPE_CLASS_N2B_E2B,
    CUC_ONUOPTICALTRANSINFO_MODULE_SUBTYPE_CLASS_N1_N2_E1,
} cuc_onuOpticalTransInfo_attr_module_subtype_t;

typedef enum {
    CUC_ONUOPTICALTRANSINFO_MODULE_USEDTYPE_ONU,
} cuc_onuOpticalTransInfo_attr_usedType_t;

typedef enum {
    CUC_ONUOPTICALTRANSINFO_MODULE_ENC_SFP_SFP_PUS,
    CUC_ONUOPTICALTRANSINFO_MODULE_ENC_XFP,
} cuc_onuOpticalTransInfo_attr_encapsulation_t;





typedef struct {
	UINT16      EntityID;
	UINT8       ModuleType;
	UINT8       ModuleSubType;
	UINT8       Usedtype;
	UINT8       EncapsulationType;
    UINT16      TxWavelength;
    UINT16      RxWavelength;
    CHAR        VendorName[MIB_TABLE_ONUOPTICALTRANSINFO_VENDER_NAME_LEN+1];
    CHAR        VendorPN[MIB_TABLE_ONUOPTICALTRANSINFO_VENDER_PN_LEN+1];
    CHAR        VendorSN[MIB_TABLE_ONUOPTICALTRANSINFO_VENDER_SN_LEN+1];
} __attribute__((packed)) MIB_TABLE_CUC_ONUOPTICALTRANSINFO_T;

#endif /* __MIB_CUC_ONUOPTICALTRANSCEIVERSINFO_TABLE_H__ */
